// 处理全局导航守卫的路由跳转的
import router from '@/router'
import store from '@/store'
import Nprogress from 'nprogress'
import 'nprogress/nprogress.css'
// 白名单页面
const whiteList = ['/login', '/404']

// vuex的数据流向
// 获取用户信息的处理逻辑
router.beforeEach(async(to, from, next) => {
  Nprogress.start()
  // 是否有token，user模块里面取出token
  const token = store.state.user.token
  if (token) {
    if (!store.getters.userId) {
      await store.dispatch('user/getUserInfoAction')
    }
    if (to.path === '/login') {
      next('/')
    } else {
      next()
    }
  } else {
    if (whiteList.includes(to.path)) {
      next()
    } else {
      next('/login')
    }
  }
  // 关闭进度条效果
  Nprogress.done()
})

// 后置守卫：路由跳转完毕之后执行，路由跳转完毕关闭进度条效果
router.afterEach(() => {
// 关闭进度条
  Nprogress.done()
})

// 通过路由的前置导航守卫  beforeEach里面进行拦截

// 1、路由跳转之前，进行路由权限拦截
// 开启一个进度条
// 2、有token
//    1. 去登录界面 -> next('/')
//    2. 不是登录页面 -> next()
// 3、没有token
//    1.去的页面是白名单页面(不需要权限的页面) -> next()
//    2.去的页面不是白名单（需要权限的页面 -> 跳转到login

// 跳转完毕，关闭进度条
